package com.monitor.search;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.monitor.pubInter.BaseSearch;
import com.monitor.model.Customer;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import lombok.Data;
/**
*   @author sunke
*   @Date 2025-03-21 15:14:47
*   @description CustomerSearch      客户信息
*/


@Data
@ApiModel("客户信息CustomerSearch")
public abstract class CustomerSearch<Sub extends CustomerSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "客户姓名")
    private String nameLike;
    @ApiModelProperty(value = "客户手机号")
    private String phoneLike;
    @ApiModelProperty(value = "")
    private String companyLike;
    @ApiModelProperty(value = "职位")
    private String positionLike;
    @ApiModelProperty(value = "性别")
    private String genderLike;
    @ApiModelProperty(value = "生日")
    private String birthdayLike;
    @ApiModelProperty(value = "座机")
    private String telephoneLike;
    @ApiModelProperty(value = "客户QQ")
    private String qqLike;
    @ApiModelProperty(value = "微信号")
    private String wechatLike;
    @ApiModelProperty(value = "联系地址")
    private String addressLike;
    @ApiModelProperty(value = "邮箱")
    private String emailLike;
    @ApiModelProperty(value = "相关备注信息")
    private String remarkLike;
    @ApiModelProperty(value = "云客客户id")
    private String ykIdLike;
    @ApiModelProperty(value = "云客跟进用户id")
    private String ykUserIdLike;
    @ApiModelProperty(value = "云客跟进员工id")
    private String partnerIdLike;
    @ApiModelProperty(value = "上次沟通说明")
    private String lastContactRemarkLike;
    @ApiModelProperty(value = "上次沟通小标签 文字")
    private String lastContactTagLike;
    @ApiModelProperty(value = "开始跟进时间")
    private Date followTimeStart;
    @ApiModelProperty(value = "结束跟进时间")
    private Date followTimeEnd;
    @ApiModelProperty(value = "企业性质")
    private String econKindLike;
    @ApiModelProperty(value = "公司类型")
    private String comTypeLike;
    @ApiModelProperty(value = "经营范围")
    private String scopeLike;
    @ApiModelProperty(value = "注册资本")
    private String registCapiLike;
    @ApiModelProperty(value = "企业法人")
    private String operNameLike;
    @ApiModelProperty(value = "大于员工数量")
    private Integer employeesNumGreater;
    @ApiModelProperty(value = "小于员工数量")
    private Integer employeesNumLess;
    @ApiModelProperty(value = "所属行业")
    private String industryLike;
    @ApiModelProperty(value = "主营产品")
    private String mainProduceLike;
    @ApiModelProperty(value = "开始最后一次沟通时间")
    private Date lastContactTimeStart;
    @ApiModelProperty(value = "结束最后一次沟通时间")
    private Date lastContactTimeEnd;
    @ApiModelProperty(value = "大于上次沟通意向 1有意向/2无意向/3资料错误/4二次外呼/5无关电话/6未接通/7未明确")
    private Integer lastContactIntentGreater;
    @ApiModelProperty(value = "小于上次沟通意向 1有意向/2无意向/3资料错误/4二次外呼/5无关电话/6未接通/7未明确")
    private Integer lastContactIntentLess;
    @ApiModelProperty(value = "用户id")
    private String userIdLike;

    public CustomerSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return Customer.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return Customer.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return Customer.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return Customer.ID;
    }

    @Override
    public String  toString() {
        return "CustomerSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(Customer.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(Customer.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(Customer.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(Customer.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(Customer.DEL_FLAG, delFlagEq);
        return getSubThis();
    }
    public Sub setNameLike(String nameLike){
        this.nameLike = nameLike;
        setLikeField(Customer.NAME, nameLike);
        return getSubThis();
    }
    public Sub setPhoneLike(String phoneLike){
        this.phoneLike = phoneLike;
        setLikeField(Customer.PHONE, phoneLike);
        return getSubThis();
    }
    public Sub setCompanyLike(String companyLike){
        this.companyLike = companyLike;
        setLikeField(Customer.COMPANY, companyLike);
        return getSubThis();
    }
    public Sub setPositionLike(String positionLike){
        this.positionLike = positionLike;
        setLikeField(Customer.POSITION, positionLike);
        return getSubThis();
    }
    public Sub setGenderLike(String genderLike){
        this.genderLike = genderLike;
        setLikeField(Customer.GENDER, genderLike);
        return getSubThis();
    }
    public Sub setBirthdayLike(String birthdayLike){
        this.birthdayLike = birthdayLike;
        setLikeField(Customer.BIRTHDAY, birthdayLike);
        return getSubThis();
    }
    public Sub setTelephoneLike(String telephoneLike){
        this.telephoneLike = telephoneLike;
        setLikeField(Customer.TELEPHONE, telephoneLike);
        return getSubThis();
    }
    public Sub setQqLike(String qqLike){
        this.qqLike = qqLike;
        setLikeField(Customer.QQ, qqLike);
        return getSubThis();
    }
    public Sub setWechatLike(String wechatLike){
        this.wechatLike = wechatLike;
        setLikeField(Customer.WECHAT, wechatLike);
        return getSubThis();
    }
    public Sub setAddressLike(String addressLike){
        this.addressLike = addressLike;
        setLikeField(Customer.ADDRESS, addressLike);
        return getSubThis();
    }
    public Sub setEmailLike(String emailLike){
        this.emailLike = emailLike;
        setLikeField(Customer.EMAIL, emailLike);
        return getSubThis();
    }
    public Sub setRemarkLike(String remarkLike){
        this.remarkLike = remarkLike;
        setLikeField(Customer.REMARK, remarkLike);
        return getSubThis();
    }
    public Sub setYkIdLike(String ykIdLike){
        this.ykIdLike = ykIdLike;
        setLikeField(Customer.YK_ID, ykIdLike);
        return getSubThis();
    }
    public Sub setYkUserIdLike(String ykUserIdLike){
        this.ykUserIdLike = ykUserIdLike;
        setLikeField(Customer.YK_USER_ID, ykUserIdLike);
        return getSubThis();
    }
    public Sub setPartnerIdLike(String partnerIdLike){
        this.partnerIdLike = partnerIdLike;
        setLikeField(Customer.PARTNER_ID, partnerIdLike);
        return getSubThis();
    }
    public Sub setLastContactRemarkLike(String lastContactRemarkLike){
        this.lastContactRemarkLike = lastContactRemarkLike;
        setLikeField(Customer.LAST_CONTACT_REMARK, lastContactRemarkLike);
        return getSubThis();
    }
    public Sub setLastContactTagLike(String lastContactTagLike){
        this.lastContactTagLike = lastContactTagLike;
        setLikeField(Customer.LAST_CONTACT_TAG, lastContactTagLike);
        return getSubThis();
    }
    public Sub setFollowTimeStart(Date followTimeStart){
        this.followTimeStart = followTimeStart;
        setDateStartField(Customer.FOLLOW_TIME, followTimeStart);
        return getSubThis();
    }
    public Sub setFollowTimeEnd(Date followTimeEnd){
        this.followTimeEnd = followTimeEnd;
        setDateEndField(Customer.FOLLOW_TIME, followTimeEnd);
        return getSubThis();
    }
    public Sub setEconKindLike(String econKindLike){
        this.econKindLike = econKindLike;
        setLikeField(Customer.ECON_KIND, econKindLike);
        return getSubThis();
    }
    public Sub setComTypeLike(String comTypeLike){
        this.comTypeLike = comTypeLike;
        setLikeField(Customer.COM_TYPE, comTypeLike);
        return getSubThis();
    }
    public Sub setScopeLike(String scopeLike){
        this.scopeLike = scopeLike;
        setLikeField(Customer.SCOPE, scopeLike);
        return getSubThis();
    }
    public Sub setRegistCapiLike(String registCapiLike){
        this.registCapiLike = registCapiLike;
        setLikeField(Customer.REGIST_CAPI, registCapiLike);
        return getSubThis();
    }
    public Sub setOperNameLike(String operNameLike){
        this.operNameLike = operNameLike;
        setLikeField(Customer.OPER_NAME, operNameLike);
        return getSubThis();
    }
    public Sub setEmployeesNumGreater(Integer employeesNumGreater){
        this.employeesNumGreater = employeesNumGreater;
        setGreaterField(Customer.EMPLOYEES_NUM, employeesNumGreater);
        return getSubThis();
    }
    public Sub setEmployeesNumLess(Integer employeesNumLess){
        this.employeesNumLess = employeesNumLess;
        setLessField(Customer.EMPLOYEES_NUM, employeesNumLess);
        return getSubThis();
    }
    public Sub setIndustryLike(String industryLike){
        this.industryLike = industryLike;
        setLikeField(Customer.INDUSTRY, industryLike);
        return getSubThis();
    }
    public Sub setMainProduceLike(String mainProduceLike){
        this.mainProduceLike = mainProduceLike;
        setLikeField(Customer.MAIN_PRODUCE, mainProduceLike);
        return getSubThis();
    }
    public Sub setLastContactTimeStart(Date lastContactTimeStart){
        this.lastContactTimeStart = lastContactTimeStart;
        setDateStartField(Customer.LAST_CONTACT_TIME, lastContactTimeStart);
        return getSubThis();
    }
    public Sub setLastContactTimeEnd(Date lastContactTimeEnd){
        this.lastContactTimeEnd = lastContactTimeEnd;
        setDateEndField(Customer.LAST_CONTACT_TIME, lastContactTimeEnd);
        return getSubThis();
    }
    public Sub setLastContactIntentGreater(Integer lastContactIntentGreater){
        this.lastContactIntentGreater = lastContactIntentGreater;
        setGreaterField(Customer.LAST_CONTACT_INTENT, lastContactIntentGreater);
        return getSubThis();
    }
    public Sub setLastContactIntentLess(Integer lastContactIntentLess){
        this.lastContactIntentLess = lastContactIntentLess;
        setLessField(Customer.LAST_CONTACT_INTENT, lastContactIntentLess);
        return getSubThis();
    }
    public Sub setUserIdLike(String userIdLike){
        this.userIdLike = userIdLike;
        setLikeField(Customer.USER_ID, userIdLike);
        return getSubThis();
    }
}